package com.sskj.uboex.http;


import com.lzy.okgo.request.GetRequest;
import com.lzy.okgo.request.PostRequest;
import com.sskj.common.base.HttpData;
import com.sskj.common.http.WebSocketObserver;
import com.sskj.level.bean.TradeListBean;
import com.sskj.lib.bean.PageBean;
import com.sskj.lib.bean.StockCoinBean;
import com.sskj.mine.bean.CoinFeeBean;
import com.sskj.mine.bean.OtherRecordBean;
import com.sskj.mine.bean.RechargeListBean;
import com.sskj.uboex.bean.AppVersionBean;
import com.sskj.uboex.bean.AssetBean;
import com.sskj.uboex.bean.Banner;
import com.sskj.uboex.bean.ChartViewCj;
import com.sskj.uboex.bean.KFiveBean;
import com.sskj.uboex.bean.LevelVolumeBean;
import com.sskj.uboex.bean.Notice;
import com.sskj.uboex.bean.NoticeList;
import com.sskj.uboex.bean.RechargeInfoBean;

import java.util.List;

/**
 * 作者 :吕志豪
 * 简书：https://www.jianshu.com/u/6e525b929aac
 * github：https://github.com/lvzhihao100
 * 描述：
 * 创建时间：2018-10-15 14:08
 */
public interface IHttpService {
    /**
     * 公告列表--单条具体信息
     */
    PostRequest<HttpData<Notice>> ggDetail(String id);
    /**
     * 查询用户下单记录
     *
     * @return
     */

    GetRequest<HttpData<KFiveBean>> getTradeEntrustList(int page, int pageSize, String type, String code, String tradeType);


    /**
     * 查询用户下单记录
     *
     * @return
     */

    GetRequest<HttpData<PageBean<TradeListBean>>> getTradeList(int page,int pageSize,String type, String code, String tradeType);

    /**
     * 充值
     *
     * @param code 币种码
     * @param type 类型 ETH 1，BTC 2，BCH 3
     * @return
     */
    PostRequest<HttpData<RechargeInfoBean>> recharge(String code, String type);

    /**
     * 获取资产列表
     *
     * @return
     */
    PostRequest<HttpData<List<AssetBean>>> getAssets();

    /**
     * 获取Banner图
     */
    PostRequest<HttpData<Banner>> getBannerImage();

    /**
     * 公告列表
     */
    PostRequest<HttpData<PageBean<NoticeList>>> getGGList(String page,String pageSize);

    /**
     * 获取杠杆成交量数据
     *
     * @param code
     * @return
     */
    GetRequest<HttpData<ChartViewCj>> getLevelVolumeList(String code, int page);

    /**
     * 获取杠杆成交量数据 -- 币币
     *
     * @param code
     * @return
     */
    GetRequest<HttpData<List<LevelVolumeBean>>> getLevelVolumeListBb(String code, int page);

    /**
     * 获取产品信息
     *
     * @param code
     * @return
     */
    PostRequest<HttpData<List<StockCoinBean>>> getProduct(String code);

    /**
     * 根据币种推送
     *
     * @param code 币种类型
     * @return
     */
    WebSocketObserver pushCoinType(String code);

    WebSocketObserver pushCoinFive(String code);

    PostRequest<HttpData<AppVersionBean>> getVersion();

    PostRequest<HttpData<List<LevelVolumeBean>>> getLevelVolumeListBbArea(String code, int page);

    /**
     * 冲提币记录
     *
     * @return
     */
    GetRequest<HttpData<PageBean<RechargeListBean>>> getAssetRecord(int page, int pageSize, String type, String stockCode);

    /**
     * 其他记录
     *
     * @return
     */
    PostRequest<HttpData<PageBean<OtherRecordBean>>> getOtherRecord(int page, int pageSize, String stockCode);

    /**
     * 获取短信验证码---codeType 1代表注册  2代表重置密码
     *
     * @param mobile   手机号
     * @param type
     * @param codeType
     * @param account  账号
     * @return
     */
    GetRequest<HttpData> sendCode(String mobile, String type, String codeType, String account);

    /**
     * 提现
     *
     * @param code       验证码
     * @param tradePwd   交易密码
     * @param usdFee     金额
     * @param walletAddr 钱包地址
     * @param stockCode  币种码
     * @return
     */
    PostRequest<HttpData> withdraw(String code, String tradePwd, String usdFee, String walletAddr, String stockCode);

    /**
     * 获取提现手续费
     *
     * @param code 币种码
     * @return
     */
    PostRequest<HttpData<CoinFeeBean>> getWithdrawFee(String code);


    GetRequest<HttpData<KFiveBean>> getTradeNewList(int page, int pageSize, String type, String code, String tradeType);

    PostRequest<HttpData> onePay(String num);

    GetRequest<HttpData<String>> getRMB();
}